反初始化只適用於class,當一個類實例被釋放之前,反初始化器將被調用。關鍵字用deinit像是初始化用init一樣。
class Temp {
deinit{
print("Temp deinit")
}
}
var temp:Temp? = Temp()
// 當可需類型的類實例變數為nil,實例將被釋放
temp = nil
反初始化應用
class User{
let id: Int
init(id: Int) {
self.id = id
print("User \(id) : I'm alive")
}
deinit{
print("User \(id) : I'm dead")
}
}
var users = [User]()
for i in 1...3 {
let user = User(id: i)
print("User \(user.id) : I'm in control")
}
print("Loop is finish")
users.removeAll()
print("Array is clear")
// 印出以下
//User 1 : I'm alive
//User 1 : I'm in control
//User 1 : I'm dead
//User 2 : I'm alive
//User 2 : I'm in control
//User 2 : I'm dead
//User 3 : I'm alive
//User 3 : I'm in control
//User 3 : I'm dead
//Loop is finish
//Array is clear
接下來,是錯誤處理的介紹